The analysis below is for Baltimore homeownership incentive programs including:

Weatherization and repairs will be added once geocoding is completed.

The primary research questions are:

Homeownership

All Homeownership Incentive Distributions, 2016-2018

Each incentive distribution was geocoded to repair/replace neighborhood assignment and to provide point locations for any later clustering or hot spot analysis.

Funding distribution by HMT group

The summary table below gives the percent of program funding that was distributed to each housing market type. Live Near Your Work is utilized primarily in strong/healhty markets, while 85% of CDBG funding goes to middle neighborhoods.

incen %>% 
  group_by(prog.type, hmt.group) %>%
  summarise(total = sum(as.numeric(amount))) %>%
  mutate(total = ifelse(is.na(total), 0, total)) %>%
  filter(!is.na(prog.type)) %>%
  ungroup() %>%
  group_by(prog.type) %>%
  mutate(pct = percent(total / sum(total))) %>%
  select(-total) %>%
  spread(key = prog.type, value = pct)

The map and table below present a program “utilization” metric - the number of incentives used per 100 home sales.

The summary table below gives program “utilization” by housing market typology tier.

Program demographics

Weatherization + Repair

[needs geocoded]

LS0tDQp0aXRsZTogIkhvbWVidXlpbmcgSW5jZW50aXZlIFByb2dyYW1zIg0Kc3VidGl0bGU6ICJEZXBhcnRtZW50IG9mIEhvdXNpbmcgYW5kIENvbW11bml0eSBEZXZlbG9wbWVudCwgQ2l0eSBvZiBCYWx0aW1vcmUiDQphdXRob3I6ICJKdXN0aW4gRWxzemFzeiwgTWF5b3IncyBPZmZpY2Ugb2YgSW5ub3ZhdGlvbiINCmVtYWlsOiAianVzdGluLmVsc3phc3pAYmFsdGltb3JlY2l0eS5nb3YiDQpkYXRlOiAiTW9uZGF5LCBNYXJjaCAyNSwgMjAxOSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBmaWdfaGVpZ2h0OiA1DQogICAgZmlnX3dpZHRoOiAxMA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAyDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpUaGUgYW5hbHlzaXMgYmVsb3cgaXMgZm9yIEJhbHRpbW9yZSBob21lb3duZXJzaGlwIGluY2VudGl2ZSBwcm9ncmFtcyBpbmNsdWRpbmc6DQogDQotIENvbW11bml0eSBEZXZlbG9wbWVudCBCbG9jayBHcmFudHMNCi0gTGl2ZSBOZWFyIFlvdXIgV29yaw0KLSBWYWNhbnRzIHRvIFZhbHVlDQoNCldlYXRoZXJpemF0aW9uIGFuZCByZXBhaXJzIHdpbGwgYmUgYWRkZWQgb25jZSBnZW9jb2RpbmcgaXMgY29tcGxldGVkLg0KDQpUaGUgcHJpbWFyeSByZXNlYXJjaCBxdWVzdGlvbnMgYXJlOg0KDQotIFdoZXJlIGFyZSBlYWNoIG9mIHRoZSBwcm9ncmFtcyB1dGlsaXplZCBhbmQgYXJlIHRoZXJlIGNvbmNlbnRyYXRpb25zPw0KLSBXaGF0IHByb2dyYW1zIGFyZSBzZXJ2aW5nIHN0cm9uZywgbWlkZGxlLCBhbmQgZGlzdHJlc3NlZCBuZWlnaGJvcmhvb2RzLCByZXNwZWN0aXZlbHk/DQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0UsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBjYWNoZSA9IFRSVUV9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGluY2x1ZGUgPSBULA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA1KQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZ2dtYXApDQpsaWJyYXJ5KGxlYWZsZXQpDQpsaWJyYXJ5KGh0bWx0b29scykNCmxpYnJhcnkoUlNvY3JhdGEpDQpsaWJyYXJ5KHNoaW55KQ0Kc291cmNlKCIuLi9zcmMvMDBfaW5pdGlhbGl6ZS5SIikNCmBgYA0KDQpgYGB7ciBsb2FkLmRhdGEsIGNhY2hlID0gVCwgd2FybmluZyA9IEYsIGVjaG8gPSBGLCBtZXNzYWdlID0gRn0NCmluY2VuIDwtIHJlYWRfY3N2KCIuLi9kYXRhL3Byb2Nlc3NlZC9ob21lYnV5aW5nX2luY2VudGl2ZXMvaG9tZWJ1eWluZ19pbmNlbnRpdmVfcHJvZ3JhbXMuY3N2IiwgbmEgPSBjKCJOQSIpKQ0KDQojaG9vZHMgPC0gZ2V0X25laWdoYm9yaG9vZF9ib3VuZGFyaWVzKCkNCmhvb2RzIDwtIHJlYWRSRFMoIi4uL2RhdGEvcHJvY2Vzc2VkL2hvb2RzLlJkcyIpDQpobXQuYnkuaG9vZCA8LSByZWFkX2V4Y2VsKCIuLi9kYXRhL3Jhdy9obXQvSE1UIGJ5IE5laWdoYm9yaG9vZCAyMDE3Lnhsc3giKSAlPiUNCiAgdHJhbnNtdXRlKG5laWdoYm9yaG9vZCA9IE5laWdoYm9yaG9vZCwNCiAgICAgICAgICAgIHByZWRvbWluYW50LmNvZGUgPSBgUHJlZG9taW5hbnQgQ29kZSBJZ25vcmluZyBOb24tUmVzaWRlbnRpYWxgKQ0Kc2FsZXMgPC0gbG9hZF9zYWxlc19kYXRhKGxvYWQuY2FjaGUgPSBUKQ0KDQojcmVhbC5wcm9wLnVybCA8LSAiaHR0cHM6Ly9kYXRhLmJhbHRpbW9yZWNpdHkuZ292L3Jlc291cmNlLzZhY3QtcXp1eS5qc29uIg0KI3JlYWwucHJvcCA8LSByZWFkLnNvY3JhdGEocmVhbC5wcm9wLnVybCwgYXBwX3Rva2VuID0gVkFSUyRTT0NSQVRBX1RPS0VOKQ0KcmVhbC5wcm9wIDwtIHJlYWRfcmRzKCIuLi9kYXRhL3Byb2Nlc3NlZC9yZWFsX3Byb3AuUmRzIikNCg0KYGBgDQoNCmBgYHtyfQ0KaG9vZHNAZGF0YSA8LSBob29kc0BkYXRhICU+JSBsZWZ0X2pvaW4oaG10LmJ5Lmhvb2QsIGJ5ID0gYygibGFiZWwiID0gIm5laWdoYm9yaG9vZCIpKQ0KYGBgDQoNCmBgYHtyfQ0KaG10LmxldmVscyA8LSBjKCJoZWFsdGh5IiwgInVwcGVyIG1pZGRsZSIsICJsb3dlciBtaWRkbGUiLCAiZGlzdHJlc3NlZCIsICJvdGhlciIpDQoNCmluY2VuIDwtIGluY2VuICU+JSANCiAgbXV0YXRlX2F0KA0KICAgIHZhcnMocHJvZy50eXBlLCBobXQuZ3JvdXAsIHByZWRvbWluYW50LmNvZGUsIGxhYmVsLCBnZW5kZXIsIHJhY2UsIGV0aG5pY2l0eSksDQogICAgZnVucyhhcy5mYWN0b3IpDQogICkgJT4lDQogIG11dGF0ZShobXQuZ3JvdXAgPSBmY3RfcmVsZXZlbChobXQuZ3JvdXAsIGhtdC5sZXZlbHMpKQ0KDQpgYGANCg0KYGBge3J9DQpzYWxlcyA8LSBzYWxlcyAlPiUgcmVuYW1lKHNhbGVzLmJsb2NrID0gQmxvY2ssIHNhbGVzLmxvdCA9IExvdCkNCnJlYWwucHJvcCA8LSByZWFsLnByb3AgJT4lIHJlbmFtZShyZWFsLmJsb2NrID0gYmxvY2ssIHJlYWwubG90ID0gbG90KQ0KYGBgDQoNCmBgYHtyfQ0KcmVhbC5wcm9wIDwtIHJlYWwucHJvcCAlPiUNCiAgbXV0YXRlKHJlYWwuYmxvY2suY2xlYW4gPSBnc3ViKCJeMCsiLCAiIiwgcmVhbC5ibG9jayksDQogICAgICAgICByZWFsLmxvdC5jbGVhbiA9IGdzdWIoIl4wKyIsICIiLCByZWFsLmxvdCkpDQoNCnNhbGVzIDwtIHNhbGVzICU+JQ0KICBtdXRhdGUoc2FsZXMuYmxvY2suY2xlYW4gPSBnc3ViKCJeMCsiLCAiIiwgc2FsZXMuYmxvY2spLA0KICAgICAgICAgc2FsZXMubG90LmNsZWFuID0gZ3N1YigiXjArIiwgIiIsIHNhbGVzLmxvdCkpIA0KYGBgDQoNCmBgYHtyfQ0KIyBmaWx0ZXIgZm9yIHByaW5jaXBhbCByZXNpZGVuY2UgYW5kICJub3JtYWwiIHB1cmNoYXNlcw0Kc2FsZXMgPC0gc2FsZXMgJT4lDQogIGxlZnRfam9pbihyZWFsLnByb3AsIA0KICAgICAgICAgICAgYnkgPSBjKCJzYWxlcy5ibG9jay5jbGVhbiIgPSAicmVhbC5ibG9jay5jbGVhbiIsDQogICAgICAgICAgICAgICAgICAgInNhbGVzLmxvdC5jbGVhbiIgPSAicmVhbC5sb3QuY2xlYW4iKQ0KICAgICAgICAgICAgKSAlPiUNCiAgZmlsdGVyKGBIb3cgQ29udmV5ZWRgID09IDEsDQogICAgICAgICAhZ3JlcGwoIk5PVCIsIHJlc2NvZGUpKQ0KYGBgDQoNCg0KIyBIb21lb3duZXJzaGlwDQoNCiMjIyBBbGwgSG9tZW93bmVyc2hpcCBJbmNlbnRpdmUgRGlzdHJpYnV0aW9ucywgMjAxNi0yMDE4DQoNCkVhY2ggaW5jZW50aXZlIGRpc3RyaWJ1dGlvbiB3YXMgZ2VvY29kZWQgdG8gcmVwYWlyL3JlcGxhY2UgbmVpZ2hib3Job29kIGFzc2lnbm1lbnQgYW5kIHRvIHByb3ZpZGUgcG9pbnQgbG9jYXRpb25zIGZvciBhbnkgbGF0ZXIgY2x1c3RlcmluZyBvciBob3Qgc3BvdCBhbmFseXNpcy4NCg0KYGBge3Igb3V0LndpZHRoID0gIjEwMCUiLCBmaWcud2lkdGggPSA4LCBmaWcuaGVpZ2h0ID0gNn0NCnBsb3QuY29sb3JzIDwtIGMoaXRlYW0uY29sb3JzWzFdLCBpdGVhbS5jb2xvcnNbNF0sIGl0ZWFtLmNvbG9yc1s1XSkNCg0KDQpwYWwgPC0gY29sb3JGYWN0b3IocGxvdC5jb2xvcnMsDQogICAgICAgICAgICAgICAgICAgZG9tYWluID0gaW5jZW4kcHJvZy50eXBlKQ0KDQpob29kcy5sYWJlbHMgPC0gcGFzdGUwKA0KICBob29kcyRsYWJlbCwNCiAgIjxicj4yMDE3IEhvdXNpbmcgTWFya2V0IFR5cG9sb2d5OiAiLCBob29kcyRwcmVkb21pbmFudC5jb2RlDQopDQoNCmxhYmVscyA8LSBwYXN0ZTAoDQogIGluY2VuJHByb2cudHlwZSwNCiAgIjxicj4iLCBpbmNlbiRob3VzZS5udW0sICIgIiwgaW5jZW4kc3RyZWV0LCAiICIsIGluY2VuJHN0cmVldC50eXBlLA0KICAiPGJyPkFtb3VudDogJCIsIGluY2VuJGFtb3VudA0KICANCikNCg0KbGVhZmxldCgpICU+JQ0KICBzZXRWaWV3KGxuZyA9IC03Ni42LCBsYXQgPSAzOS4zLCB6b29tID0gMTEpICU+JQ0KICBhZGRQcm92aWRlclRpbGVzKHByb3ZpZGVycyRTdGFtZW4uVG9uZXJMaXRlKSAlPiUgDQogIGFkZFBvbHlnb25zKGRhdGEgPSBob29kcywNCiAgICAgICAgICAgICAgc3Ryb2tlID0gVCwNCiAgICAgICAgICAgICAgZmlsbCA9IFQsDQogICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gMCwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICB3ZWlnaHQgPSAzLA0KICAgICAgICAgICAgICBsYWJlbCA9IH5sYXBwbHkoaG9vZHMubGFiZWxzLCBIVE1MKSwNCiAgICAgICAgICAgICAgb3BhY2l0eSA9IC40KSAlPiUNCiAgYWRkQ2lyY2xlTWFya2VycyhkYXRhID0gaW5jZW4gJT4lIGZpbHRlcihwcm9nLnR5cGUgPT0gIkxOWVciKSwNCiAgICAgICAgICAgICAgICAgICByYWRpdXMgPSAxLA0KICAgICAgICAgICAgICAgICAgIGNvbG9yID0gaXRlYW0uY29sb3JzWzFdLA0KICAgICAgICAgICAgICAgICAgIGxhYmVsID0gfmxhcHBseShsYWJlbHMsIEhUTUwpLA0KICAgICAgICAgICAgICAgICAgIGdyb3VwID0gIkxOWVciDQogICkgJT4lDQogIGFkZENpcmNsZU1hcmtlcnMoZGF0YSA9IGluY2VuICU+JSBmaWx0ZXIocHJvZy50eXBlID09ICJDREJHIiksDQogICAgICAgICAgICAgICAgICAgcmFkaXVzID0gMSwNCiAgICAgICAgICAgICAgICAgICBjb2xvciA9IGl0ZWFtLmNvbG9yc1s0XSwNCiAgICAgICAgICAgICAgICAgICBsYWJlbCA9IH5sYXBwbHkobGFiZWxzLCBIVE1MKSwNCiAgICAgICAgICAgICAgICAgICBncm91cCA9ICJDREJHIg0KICApICU+JQ0KICBhZGRDaXJjbGVNYXJrZXJzKGRhdGEgPSBpbmNlbiAlPiUgZmlsdGVyKHByb2cudHlwZSA9PSAiVjJWIiksDQogICAgICAgICAgICAgICAgICAgcmFkaXVzID0gMSwNCiAgICAgICAgICAgICAgICAgICBjb2xvciA9IGl0ZWFtLmNvbG9yc1szXSwNCiAgICAgICAgICAgICAgICAgICBsYWJlbCA9IH5sYXBwbHkobGFiZWxzLCBIVE1MKSwNCiAgICAgICAgICAgICAgICAgICBncm91cCA9ICJWMlYiDQogICkgJT4lDQogIGFkZExheWVyc0NvbnRyb2wob3ZlcmxheUdyb3VwcyA9IGMoIkxOWVciLCAiQ0RCRyIsICJWMlYiKSwNCiAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gbGF5ZXJzQ29udHJvbE9wdGlvbnMoY29sbGFwc2VkID0gRkFMU0UpKQ0KDQpgYGANCg0KIyMjIEZ1bmRpbmcgZGlzdHJpYnV0aW9uIGJ5IEhNVCBncm91cA0KDQpUaGUgc3VtbWFyeSB0YWJsZSBiZWxvdyBnaXZlcyB0aGUgcGVyY2VudCBvZiBwcm9ncmFtIGZ1bmRpbmcgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgdG8gZWFjaCBob3VzaW5nIG1hcmtldCB0eXBlLiBMaXZlIE5lYXIgWW91ciBXb3JrIGlzIHV0aWxpemVkIHByaW1hcmlseSBpbiBzdHJvbmcvaGVhbGh0eSBtYXJrZXRzLCB3aGlsZSA4NSUgb2YgQ0RCRyBmdW5kaW5nIGdvZXMgdG8gbWlkZGxlIG5laWdoYm9yaG9vZHMuDQoNCg0KYGBge3IgZWNobyA9IFR9DQppbmNlbiAlPiUgDQogIGdyb3VwX2J5KHByb2cudHlwZSwgaG10Lmdyb3VwKSAlPiUNCiAgc3VtbWFyaXNlKHRvdGFsID0gc3VtKGFzLm51bWVyaWMoYW1vdW50KSkpICU+JQ0KICBtdXRhdGUodG90YWwgPSBpZmVsc2UoaXMubmEodG90YWwpLCAwLCB0b3RhbCkpICU+JQ0KICBmaWx0ZXIoIWlzLm5hKHByb2cudHlwZSkpICU+JQ0KICB1bmdyb3VwKCkgJT4lDQogIGdyb3VwX2J5KHByb2cudHlwZSkgJT4lDQogIG11dGF0ZShwY3QgPSBwZXJjZW50KHRvdGFsIC8gc3VtKHRvdGFsKSkpICU+JQ0KICBzZWxlY3QoLXRvdGFsKSAlPiUNCiAgc3ByZWFkKGtleSA9IHByb2cudHlwZSwgdmFsdWUgPSBwY3QpDQpgYGANCg0KDQoNCg0KYGBge3J9DQojIEp1c3RpbiB0byBhZGQgcm9sbCB1cCBvZiBkb2xsYXIgYW1vdW50cw0KDQpob29kc0BkYXRhIDwtIGhvb2RzQGRhdGEgJT4lDQogIGxlZnRfam9pbigNCiAgICBpbmNlbiAlPiUgDQogICAgICBjb3VudChsYWJlbCwgcHJvZy50eXBlKSAlPiUgDQogICAgICBzcHJlYWQoa2V5ID0gcHJvZy50eXBlLCB2YWx1ZSA9IG4pLA0KICAgIGJ5ID0gYygibGFiZWwiID0gImxhYmVsIikNCiAgKSAlPiUNCiAgbGVmdF9qb2luKA0KICAgIHNhbGVzICU+JSANCiAgICAgIGZpbHRlcihkZWVkLmRhdGUgPj0gIjIwMTYtMDEtMDEiKSAlPiUgDQogICAgICBjb3VudChuZWlnaGJvcmhvb2QpICU+JQ0KICAgICAgcmVuYW1lKHNhbGVzLjE2XzE4ID0gbiksDQogICAgYnkgPSBjKCJsYWJlbCIgPSAibmVpZ2hib3Job29kIikNCiAgKQ0KYGBgDQoNCmBgYHtyfQ0KaG9vZHNAZGF0YSA8LSBob29kc0BkYXRhICU+JQ0KICBtdXRhdGVfYXQoDQogICAgdmFycyhDREJHLCBMTllXLCBWMlYsIHNhbGVzLjE2XzE4KSwNCiAgICBmdW5zKHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KICApICU+JQ0KICBtdXRhdGUoDQogICAgbG55dy5wZXIuMTAwc2FsZXMgPSAxMDAgKiBMTllXIC8gc2FsZXMuMTZfMTgsDQogICAgY2RiZy5wZXIuMTAwc2FsZXMgPSAxMDAgKiBDREJHIC8gc2FsZXMuMTZfMTgsDQogICAgdjJ2LnBlci4xMDBzYWxlcyA9IDEwMCAqIFYyViAvIHNhbGVzLjE2XzE4DQogICkNCmBgYA0KDQpUaGUgbWFwIGFuZCB0YWJsZSBiZWxvdyBwcmVzZW50IGEgcHJvZ3JhbSAidXRpbGl6YXRpb24iIG1ldHJpYyAtIHRoZSBudW1iZXIgb2YgaW5jZW50aXZlcyB1c2VkIHBlciAxMDAgaG9tZSBzYWxlcy4NCg0KVGhlIHN1bW1hcnkgdGFibGUgYmVsb3cgZ2l2ZXMgcHJvZ3JhbSAidXRpbGl6YXRpb24iIGJ5IGhvdXNpbmcgbWFya2V0IHR5cG9sb2d5IHRpZXIuDQoNCmBgYHtyfQ0KaG9vZHNAZGF0YSAlPiUNCiAgbXV0YXRlX2htdF9ncm91cChwcmVkb21pbmFudC5jb2RlKSAlPiUNCiAgbXV0YXRlKGhtdC5ncm91cCA9IGZjdF9yZWxldmVsKGhtdC5ncm91cCwgaG10LmxldmVscykpICU+JQ0KICBncm91cF9ieShobXQuZ3JvdXApICU+JQ0KICBzdW1tYXJpc2UoDQogICAgc2FsZXMuMTZfMTggPSBzdW0oc2FsZXMuMTZfMTgpLA0KICAgIGxueXcuY291bnQgPSBzdW0oTE5ZVyksDQogICAgbG55dy5wZXIuMTAwc2FsZXMgPSAxMDAgKiBsbnl3LmNvdW50IC8gc3VtKHNhbGVzLjE2XzE4KSwNCiAgICBjZGJnLmNvdW50ID0gc3VtKENEQkcpLA0KICAgIGNkYmcucGVyLjEwMHNhbGVzID0gMTAwICogY2RiZy5jb3VudCAvIHN1bShzYWxlcy4xNl8xOCksDQogICAgdjJ2LmNvdW50ID0gc3VtKFYyViksDQogICAgdjJ2LnBlci4xMDBzYWxlcyA9IDEwMCAqIHYydi5jb3VudCAvIHN1bShzYWxlcy4xNl8xOCkpICU+JQ0KICBtdXRhdGVfYXQoDQogICAgdmFycyhsbnl3LnBlci4xMDBzYWxlcywgY2RiZy5wZXIuMTAwc2FsZXMsIHYydi5wZXIuMTAwc2FsZXMpLA0KICAgIGZ1bnMocm91bmQoLiwxKSkpDQpgYGANCg0KYGBge3Igb3V0LndpZHRoID0gIjEwMCUiLCBmaWcud2lkdGggPSA4LCBmaWcuaGVpZ2h0ID0gNn0NCiN2YXJuYW1lIDwtICJsbnl3LnBlci4xMDBzYWxlcyINCg0KICBiaW5zIDwtIGMoMCwgMC4xLCAwLjUsICAxLCA1LCAxMCwgNTAsIDEwMCkNCg0KICBwYWwgPC0gY29sb3JCaW4oIkJsdWVzIiwNCiAgICAgICAgICAgICAgICAgIGRvbWFpbiA9IGMoMCwgMTAwKSwNCiAgICAgICAgICAgICAgICAgIGJpbnMgPSBiaW5zKQ0KDQpsbnl3LmxhYmVscyA8LSBwYXN0ZTAoDQogIGhvb2RzJGxhYmVsLA0KICAiPGJyPjIwMTcgSG91c2luZyBNYXJrZXQgVHlwb2xvZ3k6ICIsIGhvb2RzJHByZWRvbWluYW50LmNvZGUsDQogICI8YnI+TE5ZVyBwZXIgMTAwIHNhbGVzOiAiLCBhcy5jaGFyYWN0ZXIocm91bmQoaG9vZHMkbG55dy5wZXIuMTAwc2FsZXMsIDEpKQ0KKQ0KDQpjZGJnLmxhYmVscyA8LSBwYXN0ZTAoDQogIGhvb2RzJGxhYmVsLA0KICAiPGJyPjIwMTcgSG91c2luZyBNYXJrZXQgVHlwb2xvZ3k6ICIsIGhvb2RzJHByZWRvbWluYW50LmNvZGUsDQogICI8YnI+Q0RCRyBwZXIgMTAwIHNhbGVzOiAiLCBhcy5jaGFyYWN0ZXIocm91bmQoaG9vZHMkY2RiZy5wZXIuMTAwc2FsZXMsIDEpKQ0KKQ0KDQp2MnYubGFiZWxzIDwtIHBhc3RlMCgNCiAgaG9vZHMkbGFiZWwsDQogICI8YnI+MjAxNyBIb3VzaW5nIE1hcmtldCBUeXBvbG9neTogIiwgaG9vZHMkcHJlZG9taW5hbnQuY29kZSwNCiAgIjxicj5WMlYgcGVyIDEwMCBzYWxlczogIiwgYXMuY2hhcmFjdGVyKHJvdW5kKGhvb2RzJHYydi5wZXIuMTAwc2FsZXMsIDEpKQ0KKQ0KDQpsZWFmbGV0KCkgJT4lDQogIHNldFZpZXcobG5nID0gLTc2LjYsIGxhdCA9IDM5LjMsIHpvb20gPSAxMSkgJT4lDQogIGFkZFByb3ZpZGVyVGlsZXMocHJvdmlkZXJzJFN0YW1lbi5Ub25lckxpdGUpICU+JQ0KICAgIGFkZFBvbHlnb25zKGRhdGEgPSBob29kcywNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICB3ZWlnaHQgPSAyLA0KICAgICAgICAgICAgICBmaWxsID0gVCwNCiAgICAgICAgICAgICAgZmlsbE9wYWNpdHkgPSAwKSAlPiUNCiAgYWRkUG9seWdvbnMoZGF0YSA9IGhvb2RzLA0KICAgICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC41LA0KICAgICAgICAgICAgICBmaWxsQ29sb3IgPSB+cGFsKGhvb2RzJGxueXcucGVyLjEwMHNhbGVzKSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiZ3JheTEwIiwNCiAgICAgICAgICAgICAgd2VpZ2h0ID0gMiwNCiAgICAgICAgICAgICAgbGFiZWwgPSB+bGFwcGx5KGxueXcubGFiZWxzLCBIVE1MKSwNCiAgICAgICAgICAgICAgZ3JvdXAgPSAiTE5ZVyIpICU+JQ0KICBhZGRQb2x5Z29ucyhkYXRhID0gaG9vZHMsDQogICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gLjUsDQogICAgICAgICAgICAgIGZpbGxDb2xvciA9IH5wYWwoaG9vZHMkY2RiZy5wZXIuMTAwc2FsZXMpLA0KICAgICAgICAgICAgICBjb2xvciA9ICJncmF5MTAiLA0KICAgICAgICAgICAgICB3ZWlnaHQgPSAyLA0KICAgICAgICAgICAgICBsYWJlbCA9IH5sYXBwbHkoY2RiZy5sYWJlbHMsIEhUTUwpLA0KICAgICAgICAgICAgICBncm91cCA9ICJDREJHIikgJT4lDQogIGFkZFBvbHlnb25zKGRhdGEgPSBob29kcywNCiAgICAgICAgICAgICAgZmlsbE9wYWNpdHkgPSAuNSwNCiAgICAgICAgICAgICAgZmlsbENvbG9yID0gfnBhbChob29kcyR2MnYucGVyLjEwMHNhbGVzKSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiZ3JheTEwIiwNCiAgICAgICAgICAgICAgc3Ryb2tlID0gVCwNCiAgICAgICAgICAgICAgb3BhY2l0eSA9IDEsDQogICAgICAgICAgICAgIHdlaWdodCA9IDIsDQogICAgICAgICAgICAgIGxhYmVsID0gfmxhcHBseSh2MnYubGFiZWxzLCBIVE1MKSwNCiAgICAgICAgICAgICAgZ3JvdXAgPSAiVjJWIikgJT4lDQogIGFkZExlZ2VuZChwYWwgPSBwYWwsIHZhbHVlcyA9IGJpbnMsIHRpdGxlID0gIkluY2VudGl2ZXMgcGVyIDEwMCBTYWxlcyIpICU+JQ0KICBhZGRMYXllcnNDb250cm9sKGJhc2VHcm91cHMgPSBjKCJMTllXIiwgIkNEQkciLCAiVjJWIiksDQogICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGxheWVyc0NvbnRyb2xPcHRpb25zKGNvbGxhcHNlZCA9IEZBTFNFKSkNCg0KYGBgDQoNCg0KDQojIyMgUHJvZ3JhbSBkZW1vZ3JhcGhpY3MNCg0KYGBge3IgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9DQppbmNlbiAlPiUNCiAgZ2dwbG90KCkgKw0KICBnZW9tX2RlbnNpdHkoYWVzKGhvdXNlaG9sZC5pbmNvbWUsIGNvbG9yID0gcHJvZy50eXBlKSkgKw0KICB0aGVtZV9pdGVhbV9wcmVzZW50YXRpb25zKCkgKw0KICB4bGltKGMoMCwgMzAwMDAwKSkNCmBgYA0KDQpgYGB7cn0NCmluY2VuICU+JQ0KICBmaWx0ZXIoaG91c2Vob2xkLmluY29tZSA8PSAyMDAwMDApICU+JQ0KICBnZ3Bsb3QoKSArDQogIGdlb21fYm94cGxvdChhZXMocHJvZy50eXBlLCBob3VzZWhvbGQuaW5jb21lKSkgKw0KICB0aGVtZV9pdGVhbV9nb29nbGVfZG9jcygpDQpgYGANCmBgYHtyfQ0KaW5jZW4gJT4lDQogIGdyb3VwX2J5KHByb2cudHlwZSkgJT4lDQogIHN1bW1hcmlzZShtZWRpYW4uaW5jb21lID0gbWVkaWFuKGhvdXNlaG9sZC5pbmNvbWUsIG5hLnJtID0gVCksDQogICAgICAgICAgICBtZWFuLmluY29tZSA9IG1lYW4oaG91c2Vob2xkLmluY29tZSwgbmEucm0gPSBUKSkNCmBgYA0KDQpgYGB7cn0NCmluY2VuICU+JQ0KICBjb3VudChwcm9nLnR5cGUsIHJhY2UpICU+JQ0KICBncm91cF9ieShwcm9nLnR5cGUpICU+JQ0KICBtdXRhdGUocGN0ID0gcGVyY2VudChuIC8gc3VtKG4pKSkgJT4lDQogIHNlbGVjdCgtbikgJT4lDQogIHNwcmVhZChrZXkgPSBwcm9nLnR5cGUsIHZhbHVlID0gcGN0KQ0KYGBgDQoNCiMgV2VhdGhlcml6YXRpb24gKyBSZXBhaXINCg0KW25lZWRzIGdlb2NvZGVkXQ0KDQo=